[[nodiscard]] auto xx() const noexcept { return dsl::def<Vector<T, 2>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 2>>(), this->expression(), 2u, 0x00u)); }
[[nodiscard]] auto xy() const noexcept { return dsl::def<Vector<T, 2>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 2>>(), this->expression(), 2u, 0x10u)); }
[[nodiscard]] auto xz() const noexcept { return dsl::def<Vector<T, 2>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 2>>(), this->expression(), 2u, 0x20u)); }
[[nodiscard]] auto xw() const noexcept { return dsl::def<Vector<T, 2>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 2>>(), this->expression(), 2u, 0x30u)); }
[[nodiscard]] auto yx() const noexcept { return dsl::def<Vector<T, 2>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 2>>(), this->expression(), 2u, 0x01u)); }
[[nodiscard]] auto yy() const noexcept { return dsl::def<Vector<T, 2>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 2>>(), this->expression(), 2u, 0x11u)); }
[[nodiscard]] auto yz() const noexcept { return dsl::def<Vector<T, 2>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 2>>(), this->expression(), 2u, 0x21u)); }
[[nodiscard]] auto yw() const noexcept { return dsl::def<Vector<T, 2>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 2>>(), this->expression(), 2u, 0x31u)); }
[[nodiscard]] auto zx() const noexcept { return dsl::def<Vector<T, 2>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 2>>(), this->expression(), 2u, 0x02u)); }
[[nodiscard]] auto zy() const noexcept { return dsl::def<Vector<T, 2>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 2>>(), this->expression(), 2u, 0x12u)); }
[[nodiscard]] auto zz() const noexcept { return dsl::def<Vector<T, 2>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 2>>(), this->expression(), 2u, 0x22u)); }
[[nodiscard]] auto zw() const noexcept { return dsl::def<Vector<T, 2>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 2>>(), this->expression(), 2u, 0x32u)); }
[[nodiscard]] auto wx() const noexcept { return dsl::def<Vector<T, 2>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 2>>(), this->expression(), 2u, 0x03u)); }
[[nodiscard]] auto wy() const noexcept { return dsl::def<Vector<T, 2>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 2>>(), this->expression(), 2u, 0x13u)); }
[[nodiscard]] auto wz() const noexcept { return dsl::def<Vector<T, 2>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 2>>(), this->expression(), 2u, 0x23u)); }
[[nodiscard]] auto ww() const noexcept { return dsl::def<Vector<T, 2>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 2>>(), this->expression(), 2u, 0x33u)); }
[[nodiscard]] auto xxx() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x000u)); }
[[nodiscard]] auto xxy() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x100u)); }
[[nodiscard]] auto xxz() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x200u)); }
[[nodiscard]] auto xxw() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x300u)); }
[[nodiscard]] auto xyx() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x010u)); }
[[nodiscard]] auto xyy() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x110u)); }
[[nodiscard]] auto xyz() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x210u)); }
[[nodiscard]] auto xyw() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x310u)); }
[[nodiscard]] auto xzx() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x020u)); }
[[nodiscard]] auto xzy() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x120u)); }
[[nodiscard]] auto xzz() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x220u)); }
[[nodiscard]] auto xzw() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x320u)); }
[[nodiscard]] auto xwx() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x030u)); }
[[nodiscard]] auto xwy() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x130u)); }
[[nodiscard]] auto xwz() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x230u)); }
[[nodiscard]] auto xww() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x330u)); }
[[nodiscard]] auto yxx() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x001u)); }
[[nodiscard]] auto yxy() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x101u)); }
[[nodiscard]] auto yxz() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x201u)); }
[[nodiscard]] auto yxw() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x301u)); }
[[nodiscard]] auto yyx() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x011u)); }
[[nodiscard]] auto yyy() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x111u)); }
[[nodiscard]] auto yyz() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x211u)); }
[[nodiscard]] auto yyw() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x311u)); }
[[nodiscard]] auto yzx() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x021u)); }
[[nodiscard]] auto yzy() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x121u)); }
[[nodiscard]] auto yzz() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x221u)); }
[[nodiscard]] auto yzw() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x321u)); }
[[nodiscard]] auto ywx() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x031u)); }
[[nodiscard]] auto ywy() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x131u)); }
[[nodiscard]] auto ywz() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x231u)); }
[[nodiscard]] auto yww() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x331u)); }
[[nodiscard]] auto zxx() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x002u)); }
[[nodiscard]] auto zxy() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x102u)); }
[[nodiscard]] auto zxz() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x202u)); }
[[nodiscard]] auto zxw() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x302u)); }
[[nodiscard]] auto zyx() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x012u)); }
[[nodiscard]] auto zyy() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x112u)); }
[[nodiscard]] auto zyz() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x212u)); }
[[nodiscard]] auto zyw() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x312u)); }
[[nodiscard]] auto zzx() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x022u)); }
[[nodiscard]] auto zzy() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x122u)); }
[[nodiscard]] auto zzz() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x222u)); }
[[nodiscard]] auto zzw() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x322u)); }
[[nodiscard]] auto zwx() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x032u)); }
[[nodiscard]] auto zwy() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x132u)); }
[[nodiscard]] auto zwz() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x232u)); }
[[nodiscard]] auto zww() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x332u)); }
[[nodiscard]] auto wxx() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x003u)); }
[[nodiscard]] auto wxy() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x103u)); }
[[nodiscard]] auto wxz() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x203u)); }
[[nodiscard]] auto wxw() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x303u)); }
[[nodiscard]] auto wyx() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x013u)); }
[[nodiscard]] auto wyy() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x113u)); }
[[nodiscard]] auto wyz() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x213u)); }
[[nodiscard]] auto wyw() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x313u)); }
[[nodiscard]] auto wzx() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x023u)); }
[[nodiscard]] auto wzy() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x123u)); }
[[nodiscard]] auto wzz() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x223u)); }
[[nodiscard]] auto wzw() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x323u)); }
[[nodiscard]] auto wwx() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x033u)); }
[[nodiscard]] auto wwy() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x133u)); }
[[nodiscard]] auto wwz() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x233u)); }
[[nodiscard]] auto www() const noexcept { return dsl::def<Vector<T, 3>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 3>>(), this->expression(), 3u, 0x333u)); }
[[nodiscard]] auto xxxx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0000u)); }
[[nodiscard]] auto xxxy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1000u)); }
[[nodiscard]] auto xxxz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2000u)); }
[[nodiscard]] auto xxxw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3000u)); }
[[nodiscard]] auto xxyx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0100u)); }
[[nodiscard]] auto xxyy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1100u)); }
[[nodiscard]] auto xxyz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2100u)); }
[[nodiscard]] auto xxyw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3100u)); }
[[nodiscard]] auto xxzx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0200u)); }
[[nodiscard]] auto xxzy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1200u)); }
[[nodiscard]] auto xxzz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2200u)); }
[[nodiscard]] auto xxzw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3200u)); }
[[nodiscard]] auto xxwx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0300u)); }
[[nodiscard]] auto xxwy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1300u)); }
[[nodiscard]] auto xxwz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2300u)); }
[[nodiscard]] auto xxww() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3300u)); }
[[nodiscard]] auto xyxx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0010u)); }
[[nodiscard]] auto xyxy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1010u)); }
[[nodiscard]] auto xyxz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2010u)); }
[[nodiscard]] auto xyxw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3010u)); }
[[nodiscard]] auto xyyx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0110u)); }
[[nodiscard]] auto xyyy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1110u)); }
[[nodiscard]] auto xyyz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2110u)); }
[[nodiscard]] auto xyyw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3110u)); }
[[nodiscard]] auto xyzx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0210u)); }
[[nodiscard]] auto xyzy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1210u)); }
[[nodiscard]] auto xyzz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2210u)); }
[[nodiscard]] auto xyzw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3210u)); }
[[nodiscard]] auto xywx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0310u)); }
[[nodiscard]] auto xywy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1310u)); }
[[nodiscard]] auto xywz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2310u)); }
[[nodiscard]] auto xyww() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3310u)); }
[[nodiscard]] auto xzxx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0020u)); }
[[nodiscard]] auto xzxy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1020u)); }
[[nodiscard]] auto xzxz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2020u)); }
[[nodiscard]] auto xzxw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3020u)); }
[[nodiscard]] auto xzyx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0120u)); }
[[nodiscard]] auto xzyy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1120u)); }
[[nodiscard]] auto xzyz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2120u)); }
[[nodiscard]] auto xzyw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3120u)); }
[[nodiscard]] auto xzzx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0220u)); }
[[nodiscard]] auto xzzy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1220u)); }
[[nodiscard]] auto xzzz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2220u)); }
[[nodiscard]] auto xzzw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3220u)); }
[[nodiscard]] auto xzwx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0320u)); }
[[nodiscard]] auto xzwy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1320u)); }
[[nodiscard]] auto xzwz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2320u)); }
[[nodiscard]] auto xzww() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3320u)); }
[[nodiscard]] auto xwxx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0030u)); }
[[nodiscard]] auto xwxy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1030u)); }
[[nodiscard]] auto xwxz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2030u)); }
[[nodiscard]] auto xwxw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3030u)); }
[[nodiscard]] auto xwyx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0130u)); }
[[nodiscard]] auto xwyy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1130u)); }
[[nodiscard]] auto xwyz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2130u)); }
[[nodiscard]] auto xwyw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3130u)); }
[[nodiscard]] auto xwzx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0230u)); }
[[nodiscard]] auto xwzy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1230u)); }
[[nodiscard]] auto xwzz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2230u)); }
[[nodiscard]] auto xwzw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3230u)); }
[[nodiscard]] auto xwwx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0330u)); }
[[nodiscard]] auto xwwy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1330u)); }
[[nodiscard]] auto xwwz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2330u)); }
[[nodiscard]] auto xwww() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3330u)); }
[[nodiscard]] auto yxxx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0001u)); }
[[nodiscard]] auto yxxy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1001u)); }
[[nodiscard]] auto yxxz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2001u)); }
[[nodiscard]] auto yxxw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3001u)); }
[[nodiscard]] auto yxyx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0101u)); }
[[nodiscard]] auto yxyy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1101u)); }
[[nodiscard]] auto yxyz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2101u)); }
[[nodiscard]] auto yxyw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3101u)); }
[[nodiscard]] auto yxzx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0201u)); }
[[nodiscard]] auto yxzy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1201u)); }
[[nodiscard]] auto yxzz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2201u)); }
[[nodiscard]] auto yxzw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3201u)); }
[[nodiscard]] auto yxwx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0301u)); }
[[nodiscard]] auto yxwy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1301u)); }
[[nodiscard]] auto yxwz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2301u)); }
[[nodiscard]] auto yxww() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3301u)); }
[[nodiscard]] auto yyxx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0011u)); }
[[nodiscard]] auto yyxy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1011u)); }
[[nodiscard]] auto yyxz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2011u)); }
[[nodiscard]] auto yyxw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3011u)); }
[[nodiscard]] auto yyyx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0111u)); }
[[nodiscard]] auto yyyy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1111u)); }
[[nodiscard]] auto yyyz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2111u)); }
[[nodiscard]] auto yyyw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3111u)); }
[[nodiscard]] auto yyzx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0211u)); }
[[nodiscard]] auto yyzy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1211u)); }
[[nodiscard]] auto yyzz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2211u)); }
[[nodiscard]] auto yyzw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3211u)); }
[[nodiscard]] auto yywx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0311u)); }
[[nodiscard]] auto yywy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1311u)); }
[[nodiscard]] auto yywz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2311u)); }
[[nodiscard]] auto yyww() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3311u)); }
[[nodiscard]] auto yzxx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0021u)); }
[[nodiscard]] auto yzxy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1021u)); }
[[nodiscard]] auto yzxz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2021u)); }
[[nodiscard]] auto yzxw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3021u)); }
[[nodiscard]] auto yzyx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0121u)); }
[[nodiscard]] auto yzyy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1121u)); }
[[nodiscard]] auto yzyz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2121u)); }
[[nodiscard]] auto yzyw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3121u)); }
[[nodiscard]] auto yzzx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0221u)); }
[[nodiscard]] auto yzzy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1221u)); }
[[nodiscard]] auto yzzz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2221u)); }
[[nodiscard]] auto yzzw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3221u)); }
[[nodiscard]] auto yzwx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0321u)); }
[[nodiscard]] auto yzwy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1321u)); }
[[nodiscard]] auto yzwz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2321u)); }
[[nodiscard]] auto yzww() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3321u)); }
[[nodiscard]] auto ywxx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0031u)); }
[[nodiscard]] auto ywxy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1031u)); }
[[nodiscard]] auto ywxz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2031u)); }
[[nodiscard]] auto ywxw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3031u)); }
[[nodiscard]] auto ywyx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0131u)); }
[[nodiscard]] auto ywyy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1131u)); }
[[nodiscard]] auto ywyz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2131u)); }
[[nodiscard]] auto ywyw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3131u)); }
[[nodiscard]] auto ywzx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0231u)); }
[[nodiscard]] auto ywzy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1231u)); }
[[nodiscard]] auto ywzz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2231u)); }
[[nodiscard]] auto ywzw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3231u)); }
[[nodiscard]] auto ywwx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0331u)); }
[[nodiscard]] auto ywwy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1331u)); }
[[nodiscard]] auto ywwz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2331u)); }
[[nodiscard]] auto ywww() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3331u)); }
[[nodiscard]] auto zxxx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0002u)); }
[[nodiscard]] auto zxxy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1002u)); }
[[nodiscard]] auto zxxz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2002u)); }
[[nodiscard]] auto zxxw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3002u)); }
[[nodiscard]] auto zxyx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0102u)); }
[[nodiscard]] auto zxyy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1102u)); }
[[nodiscard]] auto zxyz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2102u)); }
[[nodiscard]] auto zxyw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3102u)); }
[[nodiscard]] auto zxzx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0202u)); }
[[nodiscard]] auto zxzy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1202u)); }
[[nodiscard]] auto zxzz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2202u)); }
[[nodiscard]] auto zxzw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3202u)); }
[[nodiscard]] auto zxwx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0302u)); }
[[nodiscard]] auto zxwy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1302u)); }
[[nodiscard]] auto zxwz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2302u)); }
[[nodiscard]] auto zxww() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3302u)); }
[[nodiscard]] auto zyxx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0012u)); }
[[nodiscard]] auto zyxy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1012u)); }
[[nodiscard]] auto zyxz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2012u)); }
[[nodiscard]] auto zyxw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3012u)); }
[[nodiscard]] auto zyyx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0112u)); }
[[nodiscard]] auto zyyy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1112u)); }
[[nodiscard]] auto zyyz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2112u)); }
[[nodiscard]] auto zyyw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3112u)); }
[[nodiscard]] auto zyzx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0212u)); }
[[nodiscard]] auto zyzy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1212u)); }
[[nodiscard]] auto zyzz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2212u)); }
[[nodiscard]] auto zyzw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3212u)); }
[[nodiscard]] auto zywx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0312u)); }
[[nodiscard]] auto zywy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1312u)); }
[[nodiscard]] auto zywz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2312u)); }
[[nodiscard]] auto zyww() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3312u)); }
[[nodiscard]] auto zzxx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0022u)); }
[[nodiscard]] auto zzxy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1022u)); }
[[nodiscard]] auto zzxz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2022u)); }
[[nodiscard]] auto zzxw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3022u)); }
[[nodiscard]] auto zzyx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0122u)); }
[[nodiscard]] auto zzyy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1122u)); }
[[nodiscard]] auto zzyz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2122u)); }
[[nodiscard]] auto zzyw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3122u)); }
[[nodiscard]] auto zzzx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0222u)); }
[[nodiscard]] auto zzzy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1222u)); }
[[nodiscard]] auto zzzz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2222u)); }
[[nodiscard]] auto zzzw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3222u)); }
[[nodiscard]] auto zzwx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0322u)); }
[[nodiscard]] auto zzwy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1322u)); }
[[nodiscard]] auto zzwz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2322u)); }
[[nodiscard]] auto zzww() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3322u)); }
[[nodiscard]] auto zwxx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0032u)); }
[[nodiscard]] auto zwxy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1032u)); }
[[nodiscard]] auto zwxz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2032u)); }
[[nodiscard]] auto zwxw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3032u)); }
[[nodiscard]] auto zwyx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0132u)); }
[[nodiscard]] auto zwyy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1132u)); }
[[nodiscard]] auto zwyz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2132u)); }
[[nodiscard]] auto zwyw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3132u)); }
[[nodiscard]] auto zwzx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0232u)); }
[[nodiscard]] auto zwzy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1232u)); }
[[nodiscard]] auto zwzz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2232u)); }
[[nodiscard]] auto zwzw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3232u)); }
[[nodiscard]] auto zwwx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0332u)); }
[[nodiscard]] auto zwwy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1332u)); }
[[nodiscard]] auto zwwz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2332u)); }
[[nodiscard]] auto zwww() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3332u)); }
[[nodiscard]] auto wxxx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0003u)); }
[[nodiscard]] auto wxxy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1003u)); }
[[nodiscard]] auto wxxz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2003u)); }
[[nodiscard]] auto wxxw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3003u)); }
[[nodiscard]] auto wxyx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0103u)); }
[[nodiscard]] auto wxyy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1103u)); }
[[nodiscard]] auto wxyz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2103u)); }
[[nodiscard]] auto wxyw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3103u)); }
[[nodiscard]] auto wxzx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0203u)); }
[[nodiscard]] auto wxzy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1203u)); }
[[nodiscard]] auto wxzz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2203u)); }
[[nodiscard]] auto wxzw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3203u)); }
[[nodiscard]] auto wxwx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0303u)); }
[[nodiscard]] auto wxwy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1303u)); }
[[nodiscard]] auto wxwz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2303u)); }
[[nodiscard]] auto wxww() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3303u)); }
[[nodiscard]] auto wyxx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0013u)); }
[[nodiscard]] auto wyxy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1013u)); }
[[nodiscard]] auto wyxz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2013u)); }
[[nodiscard]] auto wyxw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3013u)); }
[[nodiscard]] auto wyyx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0113u)); }
[[nodiscard]] auto wyyy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1113u)); }
[[nodiscard]] auto wyyz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2113u)); }
[[nodiscard]] auto wyyw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3113u)); }
[[nodiscard]] auto wyzx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0213u)); }
[[nodiscard]] auto wyzy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1213u)); }
[[nodiscard]] auto wyzz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2213u)); }
[[nodiscard]] auto wyzw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3213u)); }
[[nodiscard]] auto wywx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0313u)); }
[[nodiscard]] auto wywy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1313u)); }
[[nodiscard]] auto wywz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2313u)); }
[[nodiscard]] auto wyww() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3313u)); }
[[nodiscard]] auto wzxx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0023u)); }
[[nodiscard]] auto wzxy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1023u)); }
[[nodiscard]] auto wzxz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2023u)); }
[[nodiscard]] auto wzxw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3023u)); }
[[nodiscard]] auto wzyx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0123u)); }
[[nodiscard]] auto wzyy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1123u)); }
[[nodiscard]] auto wzyz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2123u)); }
[[nodiscard]] auto wzyw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3123u)); }
[[nodiscard]] auto wzzx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0223u)); }
[[nodiscard]] auto wzzy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1223u)); }
[[nodiscard]] auto wzzz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2223u)); }
[[nodiscard]] auto wzzw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3223u)); }
[[nodiscard]] auto wzwx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0323u)); }
[[nodiscard]] auto wzwy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1323u)); }
[[nodiscard]] auto wzwz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2323u)); }
[[nodiscard]] auto wzww() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3323u)); }
[[nodiscard]] auto wwxx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0033u)); }
[[nodiscard]] auto wwxy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1033u)); }
[[nodiscard]] auto wwxz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2033u)); }
[[nodiscard]] auto wwxw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3033u)); }
[[nodiscard]] auto wwyx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0133u)); }
[[nodiscard]] auto wwyy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1133u)); }
[[nodiscard]] auto wwyz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2133u)); }
[[nodiscard]] auto wwyw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3133u)); }
[[nodiscard]] auto wwzx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0233u)); }
[[nodiscard]] auto wwzy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1233u)); }
[[nodiscard]] auto wwzz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2233u)); }
[[nodiscard]] auto wwzw() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3233u)); }
[[nodiscard]] auto wwwx() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x0333u)); }
[[nodiscard]] auto wwwy() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x1333u)); }
[[nodiscard]] auto wwwz() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x2333u)); }
[[nodiscard]] auto wwww() const noexcept { return def<Vector<T, 4>>(detail::FunctionBuilder::current()->swizzle(Type::of<Vector<T, 4>>(), this->expression(), 4u, 0x3333u)); }

